home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / comp0_89.lha / Feel / Boot / Compiler / scan-args.em < prev    next >
Lisp/Scheme  |  1993-07-28  |  660b  |  30 lines

  1. ;; arglist scanner
  2. ;; lets hope that this is compiled!
  3. (defmodule scan-args
  4.   ((except (scan-args) eulisp0))
  5.  
  6.   ()
  7.   (defun scan-args (arg lst default)
  8.     (cond ((null lst) default)
  9.       ((eq (car lst) arg) (car (cdr lst)))
  10.       ((null (cdr lst)) default)
  11.       (t (scan-args arg
  12.             (cdr (cdr lst))
  13.             default))))
  14.  
  15.   (defun map-initargs (fn lst)
  16.     (cond ((null lst)
  17.        nil)
  18.       (t (cons (fn (car lst) (car (cdr lst)))
  19.            (map-initargs fn (cdr (cdr lst)))))))
  20.  
  21.   (defun fold-initargs (fn lst start)
  22.     (if (null lst)
  23.     nil
  24.       (fold-initargs fn (cdr (cdr lst) )
  25.              (fn (car lst) (car (cdr lst)) start))))
  26.  
  27.   (export scan-args map-initargs fold-initargs)
  28.  
  29. )
  30.